// pages/biz/detail.js
const BizService = require('../../services/biz');
const auth = require('../../utils/auth');
const UserService = require('../../services/user');

Page({
    /**
     * 页面的初始数据
     */
    data: {
        id: 0,
        bizInfo: null,
        goodsList: [],
        isFromOtherPage: false, // 是否从其他页面跳转过来
        tabValue: 'desc',
        comments: [],
        multiBizVisible: false,

        isLoggedIn: false,
        userInfo: null,
        loginReady: false,
        userProfile: null,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.setData({
            id: options.id
        });

        // 判断是否从其他页面跳转过来
        const pages = getCurrentPages();
        if (pages.length > 1) {
            this.setData({
                isFromOtherPage: true
            });
        }

        // 获取商家详情
        
        this.checkLoginStatus()
    },

    goPay() {
        wx.navigateTo({
            url: `/pages/biz/pay?biz_id=${this.data.id}`
        });
    },

    async loadUserInfo(){
		const result = await UserService.getUserInfo({
			showLoading: true
		});

		if(result.success){
			this.setData({
				userProfile: result.data
			});
		}
	},

    /**
     * 获取商家详情
     */
    async getBizDetail() {
        const { id } = this.data;
        try {
            const result = await BizService.getBizDetail({
                id: id
            });

            if (result.success) {
                this.setData({
                    bizInfo: result.data,
                    tabValue: result.data.have_desc ? 'desc' : 'comment'
                });

                // 获取商家商品列表
                this.getBizGoods();
            } else {

            }
        } catch (error) {

        }
    },

    /**
     * 获取商家商品列表
     */
    async getBizGoods() {
        const { id } = this.data;
        try {
            const result = await BizService.getBizGoods({
                id: id,
                showLoading: true
            });

            if (result.success) {
                this.setData({
                    goodsList: result.data || []
                });
            } else {
                wx.showToast({
                    title: result.message || '获取商品列表失败',
                    icon: 'none'
                });
            }
        } catch (error) {
            console.error('获取商品列表失败:', error);
            wx.showToast({
                title: '获取商品列表失败',
                icon: 'none'
            });
        }
    },

    goGoodsDetail(e) {
        const id = e.currentTarget.dataset.id;
        wx.navigateTo({
            url: `/pages/biz/goods?id=${id}`
        });
    },

    onMultiBiz() {
        this.setData({
            multiBizVisible: true
        });
    },

    onClose() {
        this.setData({
            multiBizVisible: false
        });
    },

    onSelect(e) {
        const { name, id } = e.detail;

        this.setData({
            multiBizVisible: false
        }, function () {
            wx.redirectTo({
                url: `/pages/biz/detail?id=${id}`
            });
        });
    },

    async getBizPings() {
        const { id } = this.data;
        try {
            const result = await BizService.bizPings({
                id: id,
                showLoading: true
            });

            this.setData({
                comments: result.data || []
            });
        } catch (error) {
            console.error('获取商家点评列表失败:', error);
        }
    },

    onTabChange(e) {
        const tab = e.currentTarget.dataset.tab;
        this.setData({
            tabValue: tab
        }, function () {
            if (this.data.tabValue == 'comment') {
                this.getBizPings();
            }
        });
    },

    goGps() {
        wx.openLocation({
            latitude: Number(this.data.bizInfo.pos[0]),
            longitude: Number(this.data.bizInfo.pos[1]),
            name: this.data.bizInfo.name,     // 位置名称（可选）
            address: this.data.bizInfo.shop_address, // 详细地址（可选）
            scale: 18,             // 地图缩放级别（可选，默认18）
            success: function () {
                console.log('成功打开地图');
            },
            fail: function (err) {
                console.error('打开地图失败：', err);
            }
        });
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        if (this.data.loginReady) {
            this.checkLoginStatus()
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },



    /**
     * 返回按钮事件
     */
    onBack() {
        wx.navigateBack({
            delta: 1
        });
    },

    /**
     * 拨打电话
     */
    callPhone() {
        wx.makePhoneCall({
            phoneNumber: this.data.bizInfo.biz_phone
        });
    },

    /**
     * 导航栏返回按钮事件
     */
    onNavbarBack() {
        wx.navigateBack({
            delta: 1
        });
    },

    /**
     * 导航栏首页按钮事件
     */
    onNavbarHome() {
        wx.switchTab({
            url: '/pages/index/index'
        });
    },



    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {
        const { bizInfo } = this.data;
        return {
            title: bizInfo ? `${bizInfo.name} - 优质商家推荐` : '发现优质商家',
            path: `/pages/biz/detail?id=${this.data.id}`,
            imageUrl: bizInfo ? bizInfo.image : '',
            success: function (res) {
                wx.showToast({
                    title: '分享成功',
                    icon: 'success'
                });
            },
            fail: function (res) {
                wx.showToast({
                    title: '分享失败',
                    icon: 'none'
                });
            }
        };
    },

    /**
     * 分享到朋友圈
     */
    onShareTimeline() {
        const { bizInfo } = this.data;
        return {
            title: bizInfo ? `${bizInfo.name} - 优质商家推荐` : '发现优质商家',
            imageUrl: bizInfo ? bizInfo.image : '',
            query: `id=${this.data.id}`
        };
    },

    toPayCode() {
        wx.navigateTo({
            url: '/pages/i/qrcode'
        });
    },

    /**
   * 检查登录状态
   */
    async checkLoginStatus() {
        try {
            const loginStatus = await auth.checkLoginStatus()

            this.setData({
                isLoggedIn: loginStatus.isLoggedIn,
                userInfo: loginStatus.userInfo,
                loginReady: true
            },function(){
                this.loadUserInfo();
                this.getBizDetail();
            })
        } catch (error) {
            console.error('检查登录状态失败:', error)
            
        }
    },

    toVip() {
        wx.switchTab({
            url: '/pages/index/vip'
        });
    }
})